package pda.agenda.ihm;

import pda.agenda.controller.*;

import java.awt.*;
import javax.swing.*;
import javax.swing.border.*;

import java.util.Calendar;
import java.util.GregorianCalendar;

public class AgendaViewJour extends JPanel {
	
	private BorderLayout layout;

	private JPanel fenetreJourMenu;
	private BorderLayout fenetreJourMenuLayout;
	private JPanel fenetreJourContenu;
	private GridLayout fenetreJourContenuLayout;

	private JButton jourPrecedant;
	private JLabel jourCourant;
	private JButton jourSuivant;

	private JTable tableDesHeures;
	private TableModelJour modelTableDesHeures;

	private JScrollPane scrollTableDesHeures;

	/**
	 * Constructeur
	 */
	public AgendaViewJour() {
		this.creerInterface();
		this.attacherReaction();
	}

	/**
	 * Accesseur sur le JLabel qui affiche le jour courant.
	 * @return La référence sur ce JLabel.
	 */
	public JLabel getLabelJourCourant() {
		return this.jourCourant;
	}

	/**
	 * Accesseur sur le JButton qui affiche le jour précédant.
	 * @return La référence sur ce JButton.
	 */
	public JButton getBoutonJourPrecedant() {
		return this.jourPrecedant;
	}

	/**
	 * Accesseur sur le JButton qui affiche le jour suivant.
	 * @return La référence sur ce JButton.
	 */
	public JButton getBoutonJourSuivant() {
		return this.jourSuivant;
	}

	/**
	 * Accesseur sur la JTable qui affiche les activités.
	 * @return La référence sur cette JTable.
	 */
	public JTable getTableDesHeures() {
		return this.tableDesHeures;
	}

	/**
	 * Accesseur sur le modèle de la JTable.
	 * @return La référence sur ce modèle.
	 */
	public TableModelJour getModelTableDesHeures() {
		return this.modelTableDesHeures;
	}

	/**
	 * Créer et place les composants sur l'interface
	 */
	private void creerInterface() {

		this.layout = new BorderLayout();
		this.setLayout(layout);

		// Couleur, taille, mise en forme des composants
		Color fondMenu = new Color(41,52,57);
		BoutonMenu apparenceBouton = new BoutonMenu();

		// Menu de l'onglet "Jour"
		this.fenetreJourMenu = new JPanel();
		this.fenetreJourMenuLayout = new BorderLayout();
		this.fenetreJourMenu.setLayout(fenetreJourMenuLayout);
		this.jourPrecedant = new JButton("<");
		this.jourSuivant = new JButton(">");
		this.jourCourant = new JLabel();

		this.fenetreJourMenu.setBackground(fondMenu);
		this.jourCourant.setHorizontalAlignment(JLabel.CENTER);
		this.jourCourant.setForeground(Color.WHITE);
		this.jourPrecedant.setUI(apparenceBouton);
		this.jourSuivant.setUI(apparenceBouton);

		fenetreJourMenu.add(jourPrecedant,BorderLayout.LINE_START);
		fenetreJourMenu.add(jourCourant,BorderLayout.CENTER);
		fenetreJourMenu.add(jourSuivant,BorderLayout.LINE_END);

		// Contenu de la journée (liste des heures)
		this.fenetreJourContenu = new JPanel();
		this.fenetreJourContenuLayout = new GridLayout(1,1);
		this.fenetreJourContenu.setLayout(fenetreJourContenuLayout);

		this.modelTableDesHeures = new TableModelJour();
		this.tableDesHeures = new JTable(modelTableDesHeures);
		this.scrollTableDesHeures = new JScrollPane(tableDesHeures);

		this.tableDesHeures.setTableHeader(null);

		fenetreJourContenu.add(scrollTableDesHeures);
		this.add(fenetreJourMenu, BorderLayout.NORTH);
		this.add(fenetreJourContenu, BorderLayout.CENTER);

	}

	/**
	 * Attache les reactions aux composants de l'interface
	 */
	private void attacherReaction() {
		// Ecouteur sur les boutons
		EcouteurActionBouton ecouteurBouton = new EcouteurActionBouton();
		// -- Changement de jours
		this.jourPrecedant.addActionListener(ecouteurBouton);
		this.jourSuivant.addActionListener(ecouteurBouton);

		// Ecouteur sur la JTable
		EcouteurActionTable ecouteurTable = new EcouteurActionTable();
		this.tableDesHeures.addMouseListener(ecouteurTable);
		
	}
}
